﻿using System;

#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member

namespace Vanara.PInvoke
{
	[PInvokeData("cfgmgr32.h")]
	[Flags]
	public enum CM_DEVCAP : uint
	{
		CM_DEVCAP_LOCKSUPPORTED = 0x00000001,
		CM_DEVCAP_EJECTSUPPORTED = 0x00000002,
		CM_DEVCAP_REMOVABLE = 0x00000004,
		CM_DEVCAP_DOCKDEVICE = 0x00000008,
		CM_DEVCAP_UNIQUEID = 0x00000010,
		CM_DEVCAP_SILENTINSTALL = 0x00000020,
		CM_DEVCAP_RAWDEVICEOK = 0x00000040,
		CM_DEVCAP_SURPRISEREMOVALOK = 0x00000080,
		CM_DEVCAP_HARDWAREDISABLED = 0x00000100,
		CM_DEVCAP_NONDYNAMIC = 0x00000200,
		CM_DEVCAP_SECUREDEVICE = 0x00000400,
	}

	[PInvokeData("cfgmgr32.h")]
	public enum CM_INSTALL_STATE : uint
	{
		CM_INSTALL_STATE_INSTALLED = 0,
		CM_INSTALL_STATE_NEEDS_REINSTALL = 1,
		CM_INSTALL_STATE_FAILED_INSTALL = 2,
		CM_INSTALL_STATE_FINISH_INSTALL = 3,
	}

	[PInvokeData("cfgmgr32.h")]
	public enum CM_REMOVAL_POLICY : uint
	{
		CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL = 1,
		CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL = 2,
		CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL = 3,
	}
}